package org.upm;

/**
 * Clase desde la que se ejecuta el servicio de Billing.
 */
import java.io.FileReader;
import java.util.ArrayList;


import au.com.bytecode.opencsv.CSVReader;
public class Test {		
		//@SuppressWarnings("unchecked")
		public static void main(String [] args){
			try{
		        CSVReader reader = new CSVReader(new FileReader("Pedro-log-asterisk.csv"));;
		        Poblacion poblacion = new Poblacion();
	            String[] nextLine;
	            ArrayList llamadas = new ArrayList();
	            Usuario llamante = null;
	            while ((nextLine = reader.readNext()) != null) {
	                // nextLine[] is an array of values from the line
	            	llamante = poblacion.dameUsuario((String) nextLine[1]);
	            	Usuario destinatario = poblacion.dameUsuario((String) nextLine[6]);
	            	int duracion = Integer.parseInt(nextLine[13]);
	            	int hora = Integer.parseInt(nextLine[16]);
	            	int precioMinuto = 50;
	                System.out.println( llamante.getNombre() + " llama a " + destinatario.getNombre() + " duración: " + duracion
	                                   	                                                                + " hora de llamada " + hora);
	                Llamada tmp = new Llamada(hora, llamante, destinatario, duracion, precioMinuto);
	                llamadas.add(tmp);
	            }
	            if(llamante.getNombre().equals("Pedro")){
	            	Usuario favorito = poblacion.dameUsuario("Manuel");
	            	llamante.setFavorito(favorito);
	            }
	            GeneradorRecibo gr = new GeneradorRecibo();
	            Factura factura = gr.generaRecibo("Facturacion.drl", llamante, llamadas);
	            
	          //Objetenemos las tarifas que podemos usar.
                GeneradorTarifas ga = new GeneradorTarifas();
                Object[] tarifas = ga.dameTarifas();
                
                //Creamos el objeto que seleccionará la tarifa
                Tarificador tarificador = new Tarificador();
                Object[] listaLlamadas = llamadas.toArray(); 
                for(int i = 0; i < listaLlamadas.length-1; i ++){
                	Llamada temporal = (Llamada) listaLlamadas[i];
                	tarificador.seleccionaTarifa(temporal, tarifas);
                }     
                Factura f1 = new Factura();
                llamante.setFactura(f1);
	            Factura facturaEspecial = gr.generaRecibo("FacturacionEspecial.drl", llamante, llamadas);
			}catch(Exception e){
				System.out.println(e.getMessage());
			}
		}
	}

